package pt.ipleiria.plp.ui;


import de.enough.polish.ui.Command;
import de.enough.polish.ui.CommandListener;
import de.enough.polish.ui.Displayable;
import de.enough.polish.ui.List;
import de.enough.polish.util.Locale;
import javax.microedition.lcdui.Image;
import pt.ipleiria.plp.BlackSpotterMidlet;

/**
 *
 * @author Ricardo
 */
// Classe pai dos ecrãs cujo propósito seja exibir listas de BlackSpots
public abstract class VerEventosScreen extends List implements CommandListener{

    private BlackSpotterMidlet midlet;
    private Command cmdMenu = new Command(Locale.get("cmd.Menu"), Command.BACK, 2);
    private Command cmdEdit = new Command(Locale.get("cmd.Editar"), Command.ITEM, 1);
    private Command cmdEnviar = new Command(Locale.get("cmd.Enviar"), Command.ITEM, 2);
    private Command cmdDel = new Command(Locale.get("cmd.Apagar"), Command.ITEM, 3);

    public VerEventosScreen(String title, int listType, BlackSpotterMidlet midlet) {
        //#style defaultScreen
        super(title, listType);

        this.setSelectCommand(cmdEdit);
        this.setCommandListener(this);
        this.midlet = midlet;
        this.addCommand(cmdMenu);


    }

    public VerEventosScreen(String title, int listType, String[] stringElements, Image[] imageElements, BlackSpotterMidlet midlet) {
        //#style defaultScreen
        super(title, listType, stringElements, imageElements);
        this.midlet = midlet;
    }

    // Método a implementar para popular cada ecrã com BlackSpots
    // (e.g. o ecrã MeusBlackSpots só mostra BlackSpots criadas pelo utilizador,
    //  PertoDeMim só mostra BlackSpots dentro de uma certa distância, etc.)
    public abstract void populateList();

    //Métodos para implementar lógica adicional aquando da selecção de um ou mais
    //BlackSpots da lista, caso necessário (e.g. processamento que seja necessário
    //antes de envio, mudança de notificações visuais no ecrã, etc)

    //TODO: ver se isto é necessário ou se deve ter outras declarações com outrsos parâmetros
    public abstract void selectListItem();


    public void commandAction(Command c, Displayable d) {

        if (c == getCmdMenu()) {
            getMidlet().getDisplay().setCurrent(getMidlet().getMainMenu());
        }
    }

    /**
     * @return the midlet
     */
    public BlackSpotterMidlet getMidlet() {
        return midlet;
    }

    /**
     * @return the cmdMenu
     */
    public Command getCmdMenu() {
        return cmdMenu;
    }

    /**
     * @return the cmdEdit
     */
    public Command getCmdEdit() {
        return cmdEdit;
    }

    /**
     * @return the cmdEnviar
     */
    public Command getCmdEnviar() {
        return cmdEnviar;
    }

    /**
     * @return the cmdDel
     */
    public Command getCmdDel() {
        return cmdDel;
    }
}
